// 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数，
// 使它们的和与 target 最接近。

// 返回这三个数的和。

// 假定每组输入只存在恰好一个解。
function threeNUmClose(nums, target) {
 nums.sort((a, b) => a - b)
  // 定义一个差值
  let cha = Math.abs(nums[0] + nums[1] + nums[2] - target)
  let he = nums[0] + nums[1] + nums[2]
  if (nums.length < 3) return 
  for (var i = 0; i < nums.length; i++) {
    let left = i + 1
    let right = nums.length - 1
    while(left<right) {
      let num = nums[i] + nums[left] + nums[right]
      if(Math.abs(num - target) < cha) {
        cha = Math.abs(num-target)
        he = num
      }
      if(num - target>0) right--
      else if(num - target<0) left++
      else return num
    }
  }
  return he 
} 
console.log(threeNUmClose([-1,2,1,-4],1));